/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import io.MorososDTO;
import java.sql.*;
import java.util.ArrayList;

/**
 *
 * @author Acer
 */
public class MySQLMorososDAO {
 /**
     * este metodo realiza un listados de todos lo morososde la fecha 
     * @param fecha
     * @return
     * @throws DAOException 
     */
    public ArrayList<MorososDTO> listarMorosos() throws DAOException {
        Connection conexion = null;
        try{
            java.sql.Date fecha = new java.sql.Date((new java.util.Date()).getTime());
            conexion = MySQLDAOFactory.getMySQLDAOFactory().getConexion();
            Statement stat = conexion.createStatement();
            ResultSet rs = stat.executeQuery("select venta.id,telefono,direccionActual, fechaVencimiento, nombre, tipo, cuota.numero, cuota.monto from venta,plan, cuota, persona where venta.id = plan.idVenta and plan.activo = 1 and cuota.idPlan = plan.idPlan and persona.id = venta.idCliente and cuota.fechaVencimiento <= '"+ fecha + "' and cuota.monto > ifnull((select sum(pago.montopagado) from pago where pago.idCuota = cuota.id group by pago.idCuota),0)group by venta.id");
            ArrayList<MorososDTO> lista = new ArrayList();
            while (rs.next()) {

                MorososDTO morosos = new MorososDTO(Integer.parseInt(rs.getString("venta.id")),rs.getString("nombre"), rs.getString("telefono"), rs.getString("direccionActual"),Date.valueOf(rs.getString("fechaVencimiento")), Double.parseDouble(rs.getString("cuota.monto")), rs.getString("tipo"), Integer.parseInt(rs.getString("cuota.numero")));
                lista.add(morosos);}
            
            rs.close();
            return lista;
        } catch (SQLException e) {
            throw new DAOException("Error al leer desde la base de datos Morosos", e);
        } finally {
            MySQLDAOFactory.getMySQLDAOFactory().cerrarConexion(conexion);
        }
    }   
   
}
